/**
 * 比分数据格式化
 * @param data []
 * @doc http://yapi.qihang2021.cn:3000/project/35/interface/api/417
 */
export const scoreDataFormat = (data) => {
  const {
    id,
    eventId, // 赛事ID	0
    matchTime, // 开赛时间	1
    homeTeamName, // 主队名称	2
    awayTeamName, // 客队名称	3
    eventName, // 联赛名称	4
    homeTeamId, // 主队ID	5
    awayTeamId, // 客队ID	6
    leagueLevel, // 联赛等级	8
    leagueColors, // 联赛颜色	9
    leagueLogo, // 联赛logo	10
    homeTeamRanking, // 主队排名	11
    awayTeamRanking, // 客队排名	12
    matchType = 1, // 赛事类型	13
    f14, // 14
    extendedDescription, // 扩展说明	15
    theGameIsDividedIntoSeveralQuarters, // 比赛分几节	16
    isThereANanoAnimation, // 是否有纳米动画	17
    whetherToUseLiveVideo, // 是否用视频直播	18
    isItPopular, // 是否热门	19
    neutral, // 是否中立场	20
    gameTime, // 比赛进行时间(s)	21
    status, // 大状态	22
    smallState, // 小状态	23
    whetherThereIsIntelligence, // 是否有情报	24
    popularity, // 人气	25
    sortCode, // 排序码	26
    score, // 比分	27	比分
    exponent, // 指数	28	指数
    totalLens, // 总伦次	29
    currentRound, // 当前轮次	30
    preList, // 主播列表	31
    homeTeamLogo, // 主队logo	32
    awayTeamLogo, // 客队logo	33
    animationUrl, // 动画地址 34
    homeTeamScore, // 主队得分
    awayTeamScore, // 客队得分
    teeTime,
    surplusTime,
    isLive, // 直播状态
    homeTeamRed, // 主队红牌
    homeTeamYellow, // 主队黄牌红牌
    awayTeamRed, // 主队红牌
    awayTeamYellow, // 客队红牌
  } = data || {};

  let scoreObj = {};
  if (matchType === 1) {
    // 比分（足球）
    const [
      homeTeamCurrentScore, // 全场主队得分:	0
      awayTeamCurrentScore, // 全场客队得分	1
      homeTeamHalfScore, // 半场主队得分	2
      awayTeamHalfScore, // 半场客队得分	3
      homeTeamRedCard, // 主队红牌	4
      awayTeamRedCard, // 客队红牌	5
      homeTeamYellowCard, // 主队黄牌	6
      awayTeamYellowCard, // 客队黄牌	7
      homeTeamCornerKick, // 主队角球	8
      awayTeamCornerKick, // 客队角球	9
    ] = score || [];

    scoreObj = {
      homeTeamCurrentScore, // 全场主队得分:	0
      awayTeamCurrentScore, // 全场客队得分	1
      homeTeamHalfScore, // 半场主队得分	2
      awayTeamHalfScore, // 半场客队得分	3
      homeTeamRedCard, // 主队红牌	4
      awayTeamRedCard, // 客队红牌	5
      homeTeamYellowCard, // 主队黄牌	6
      awayTeamYellowCard, // 客队黄牌	7
      homeTeamCornerKick, // 主队角球	8
      awayTeamCornerKick, // 客队角球	9
    };
  }
  if (matchType === 2) {
    // 比分（篮球）
    const [
      homeTeamCurrentScore, // 主队第当前得分	0
      awayTeamCurrentScore, // 客队第当前得分	1
      homeTeamScoredInTheFirstQuarter, // 主队第一节得分	2
      awayTeamScoredInTheFirstQuarter, // 客队第一节得分	3
      homeTeamScoredTheSecondQuarter, // 主队第二节得分	4
      awayTeamScoredTheSecondQuarter, // 客队第二节得分	5
      homeTeamScoreInTheThirdQuarter, // 主队第三节得分	6
      awayTeamScoredTheThirdQuarter, // 客队第三节得分	7
      homeTeamScoredTheFourthQuarter, // 主队第四节得分	8
      awayTeamScoredInTheFourthQuarter, // 客队第四节得分	9
      homeTeamOvertimeScore, // 主队加时得分	10
      awayTeamOvertimeScore, // 客队加时得分	11
    ] = score || [];

    scoreObj = {
      homeTeamCurrentScore, // 主队第当前得分	0
      awayTeamCurrentScore, // 客队第当前得分	1
      homeTeamScoredInTheFirstQuarter, // 主队第一节得分	2
      awayTeamScoredInTheFirstQuarter, // 客队第一节得分	3
      homeTeamScoredTheSecondQuarter, // 主队第二节得分	4
      awayTeamScoredTheSecondQuarter, // 客队第二节得分	5
      homeTeamScoreInTheThirdQuarter, // 主队第三节得分	6
      awayTeamScoredTheThirdQuarter, // 客队第三节得分	7
      homeTeamScoredTheFourthQuarter, // 主队第四节得分	8
      awayTeamScoredInTheFourthQuarter, // 客队第四节得分	9
      homeTeamOvertimeScore, // 主队加时得分	10
      awayTeamOvertimeScore, // 客队加时得分	11
    };
  }

  const [
    matchID, // 比赛ID	0
    homeTeamOdds, // 主队赔率	1
    asianHandicap, // 亚盘盘口	2
    awayTeamOdds, // 客队赔率	3
    asianHandicapInChinese, // 亚盘盘口中文表示	4
    homeBidder, // 标盘主	5
    awayBidder, // 标盘客	6
    standardAnd, // 标盘和	7
    bigOdds, // 大赔率	8
    sizeIndex, // 大小指标	9
    smallOdds, // 小赔率	10
    sizeIndicatorInChinese, // 大小指标中文表示	11
  ] = exponent || [];

  return {
    id,
    eventId, // 赛事ID	0
    startTime: matchTime * 1000, // 开赛时间	1
    homeTeamName, // 主队名称	2
    awayTeamName, // 客队名称	3
    eventName, // 联赛名称	4
    homeTeamId, // 主队ID	5
    awayTeamId, // 客队ID	6
    leagueLevel, // 联赛等级	8
    leagueColors, // 联赛颜色	9
    leagueLogo, // 联赛logo	10
    homeTeamRanking, // 主队排名	11
    awayTeamRanking, // 客队排名	12
    matchType, // 赛事类型	13
    f14, // 14
    extendedDescription, // 扩展说明	15
    theGameIsDividedIntoSeveralQuarters, // 比赛分几节	16
    isThereANanoAnimation, // 是否有纳米动画	17
    whetherToUseLiveVideo, // 是否用视频直播	18
    isItPopular, // 是否热门	19
    neutral, // 是否中立场	20
    gameTime, // 比赛进行时间(s)	21
    status, // 大状态	22
    smallState, // 小状态	23
    whetherThereIsIntelligence, // 是否有情报	24
    popularity, // 人气	25
    sortCode, // 排序码	26
    score: scoreObj, // 比分	27
    // 指数	28
    exponent: {
      matchID, // 比赛ID	0
      homeTeamOdds, // 主队赔率	1
      asianHandicap, // 亚盘盘口	2
      awayTeamOdds, // 客队赔率	3
      asianHandicapInChinese, // 亚盘盘口中文表示	4
      homeBidder, // 标盘主	5
      awayBidder, // 标盘客	6
      standardAnd, // 标盘和	7
      bigOdds, // 大赔率	8
      sizeIndex, // 大小指标	9
      smallOdds, // 小赔率	10
      sizeIndicatorInChinese, // 大小指标中文表示	11
    },
    totalLens, // 总伦次	29
    currentRound, // 当前轮次	30
    preList, // 主播列表	31
    homeTeamLogo, // 主队logo	32
    awayTeamLogo, // 客队logo	33
    animationUrl, // 动画地址 34
    homeTeamScore, // 主队得分
    awayTeamScore, // 客队得分
    teeTime,
    surplusTime,
    isLive, // 直播状态
    homeTeamRed, // 主队红牌
    homeTeamYellow, // 主队黄牌红牌
    awayTeamRed, // 主队红牌
    awayTeamYellow, // 客队红牌
  };
};

export const scoreUpdateDataFormat = (data) => {
  const keysArray = Object.keys(data);
  const formatData = scoreDataFormat(data);
  const obj = {};
  keysArray.forEach((key) => {
    obj[key] = formatData[key];
  });
  return obj;
};

// 比分小状态格式化
export const scoreSmallStatusFormat = (status) => {
  const s = Number(status);
  const statusTextObj = {
    0: '未开始',
    1: '上半场',
    2: '下半场',
    11: '第一节',
    12: '第二节',
    13: '第三节',
    14: '第四节',
    20: '加时',
    21: '加时上半场',
    22: '加时下半场',
    25: '点球',
    31: '中场',
    40: '取消',
    41: '延期',
    42: '推迟',
    43: '中断',
    100: '完场',
    11100: '第一节 完',
    12100: '第二节 完',
    13100: '第三节 完',
    14100: '第四节 完',
    20100: '加时 完',
    21100: '加时上半场 完',
    22100: '加时下半场 完',
  };
  const label = statusTextObj[s];

  if (!label) {
    return {
      label: '异常',
      status,
      disable: true,
    };
  }

  if (s !== 0 && s !== 40 && s !== 41 && s !== 42 && s !== 43) {
    return ({
      label,
      status,
      disable: false,
    });
  }

  return {
    label,
    status,
    disable: true,
  };
};

/**
 * 根据像素值转换成视图大小的像素值
 * @param num
 * @returns {number}
 */
export const viewSizeFormat = (num) => num / (750 / document.documentElement.clientWidth);

/**
 * 秒格式化成分秒
 * @param second 秒
 * @param format 格式化 HH:mm:ss
 */
export const secondFormatter = (second, format = 'mm:ss') => {
  const h = Math.floor(second / 3600) < 10 ? `0${Math.floor(second / 3600)}` : Math.floor(second / 3600);
  // eslint-disable-next-line no-mixed-operators
  const m = Math.floor((second / 60 % 60)) < 10 ? `0${Math.floor((second / 60 % 60))}` : Math.floor((second / 60 % 60));
  const s = Math.floor((second % 60)) < 10 ? `0${Math.floor((second % 60))}` : Math.floor((second % 60));

  return format.replace(/HH/g, h).replace(/mm/g, m).replace(/ss/g, s);
};
